#pragma once
#include <opencv2/opencv.hpp>
#include "common/base_struct.h"
#include "stream/total_struct.h"

namespace stream {

class BasePusher
{
public:
  BasePusher(StreamPusherInfo* spifo, LogInfo* log_info):
    pusher_ifo(spifo), log_ifo(log_info), stop_flag(common::CameraClosed),
    stop_flag2(common::CameraClosed) {
      encode_type = 0;
    }
  virtual ~BasePusher() {};

public:
  virtual int init_params() = 0;
  virtual int start_push() = 0;
  virtual int stop_push() = 0;
  
  virtual int add_frame(stream::ImageBlob& buffer) = 0;

private:

public: 


public:
  LogInfo* log_ifo;
  StreamPusherInfo* pusher_ifo;
  int encode_type;

  std::atomic_int stop_flag;
  std::atomic_int stop_flag2;

};


}   // namespace camera
